$(() => {
	/* Система избранных уроков */
    const user_id = accountUserId;

    $('body').append(`<span id="fav_msg" style="display:none;"><i aria-hidden="true"></i><span class="fav_msg_text"></span></span>`);

    //Значек избранного в уроке
    if ($('.lesson-header-block').length > 0) {
        let lesson_id = new URLSearchParams(new URL(location.href).search).get('id');
        let lesson_title = $('.lesson-title-value').text().replaceAll('"','\'');
        let lesson_module = $('.breadcrumb li:last-child a').text();

        $.get(`/chtm/favorite~check?user_id=${user_id}&lesson_id=${lesson_id}`, function(data) {
            $('.lesson-header-block').append(`
    <a class="favIcon" onClick="add_toFavorite(${user_id}, ${lesson_id}, '${lesson_title}', '${lesson_module}');">
    ${loadIcon(data)}
    </a>
    `);

            if (data) {
                $('.lesson-header-block .favIcon').addClass('active');
            }
        });
    }

    //Значек избранного в списке уроков
    if ($('.lesson-list:not(.fast-edit)').length > 0) {
        load_listFavorite(user_id);
    }

    //Добавить пункт в боковую панель
	setTimeout(function() {
      $('.gc-account-user-menu').append(`
          <li class="menu-item menu-item-favorite">
              <a title="Любимое" class="with-label">
              		
                  <span class="notify-count with-label" style="display: none;"></span>

              </a>
          </li>
      `);
      
        $('.menu-item-favorite').on('click', function() {
            $('.gc-account-user-submenu-bar').addClass('gc-account-user-submenu-bar-favorite');
            $('.gc-account-user-submenu-bar, .gc-fade-wrapper').show();
            load_menuFavorite(user_id);
        });

        count_favorite(user_id);
    }, 500);
})

//Функция показа сообщения добавления/исключения из избранного
function showAndHideFavMsg() {
  const $favMsg = $('#fav_msg');
  
  if ($favMsg.length) {
    $favMsg.css({ opacity: 0, display: 'inline-block' })
           .animate({ opacity: 1 }, 1000);
    setTimeout(function() {
        $favMsg.animate({ opacity: 0 }, 1000, function() {
            $favMsg.css('display', 'none');
        });
    }, 3000);
  }
}

//Функция добавления/исключения урока из избранного
function add_toFavorite(user_id, lesson_id, lesson_title, lesson_module, load_type) {
	$.get(`/chtm/favorite~add?user_id=${user_id}&lesson_id=${lesson_id}&lesson_title=${lesson_title}&lesson_module=${lesson_module}`, function(data) {
			
			if (data != 'overlimit') {
				if (load_type != 'list') {
					$('.favIcon').html(loadIcon(data));
				} else {
					$('.lesson-list li[data-lesson-id="'+lesson_id+'"] .favIcon').html(loadIcon(data));
				}
				
				switch (data) {
					case true:
						$('#fav_msg').attr('class','plus');
						$('#fav_msg i').attr('class', 'fa fa-plus-circle');
						$('.fav_msg_text').text('Урок добавлен в избранное');
						$('.lesson-header-block .favIcon, .lesson-list li[data-lesson-id="'+lesson_id+'"] .favIcon').addClass('active');
						break;
					
					case false: 
						$('#fav_msg').attr('class','minus');
						$('#fav_msg i').attr('class', 'fa fa-minus-circle');
						
						$('.fav_msg_text').text('Урок убран из избранного');
						$('.lesson-header-block .favIcon, .lesson-list li[data-lesson-id="'+lesson_id+'"] .favIcon').removeClass('active');
						break;
					default:
						// code
				}

				count_favorite(user_id);
			
				
			} else {
				$('#fav_msg').attr('class','overlimit');
				$('#fav_msg i').attr('class', 'fa fa-stop-circle');
				
				$('.fav_msg_text').text('Превышен лимит записей в избранном');
			}
			
			showAndHideFavMsg();
			
	});
}

//Функция загрузки содержимого подменю в боковой панели
function load_menuFavorite(user_id) {
	
	$.get(`/chtm/favorite~load?user_id=${user_id}`, function(data) {
		let all_fav = '';
		if (data.length > 0) {
			data.forEach((item) => {
				
				all_fav += `
					<li class="menu-item-${item['lesson_id']}">
	  				<a class="subitem-link" target="_self" href="/pl/teach/control/lesson/view?id=${item['lesson_id']}">
	  						<span class="favTitle">${item['lesson_title']}</span>
	  						<span class="favModule">${item['lesson_module']}</span>
	  					</a>
	  			</li>
				`;
			});
		} else {
			all_fav = '<li class="fav_empty">У вас нет любимых занятий</li>';
		}

		$('.gc-account-user-submenu-bar').html(`
  		<div><h3>Мои любимые занятия</h3></div>
  
  		<ul class="gc-account-user-submenu">
  			${all_fav}
  		</ul>
  	`);
	});
}

//Функция добавления значка избранного в список уроков
function load_listFavorite(user_id) {
	$.get(`/chtm/favorite~load?user_id=${user_id}`, function(data) {
		allFavorite = data;
		
		$('.lesson-list li').each((i, lesson) => {
			let findFav = false;
			let curLessonID = $(lesson).attr('data-lesson-id');
            
            if ($(lesson).hasClass('lesson-is-hidden')) return;
			
			allFavorite.forEach(item => {
				let favLessonID = item['lesson_id'];
				
				if (curLessonID == favLessonID) {
					findFav = true;
				}
			});
			
            let lsTitle = $(lesson).find('.title').html().split('<')[0].replaceAll('"','\\\'').replace(/[\n\t]+/g, '');
            
            
			$(lesson).find('a').append(`
				<a class="favIcon" onClick="add_toFavorite(${user_id}, ${$(lesson).attr('data-lesson-id')}, '${lsTitle}', '${$('h1').text()}','list');">
					${loadIcon(findFav)}
				</a>
			`);
			
			if (findFav) {
				$(lesson).find('.favIcon').addClass('active');
			}
			
			$(lesson).find('a.favIcon').on('click', function() {
				event.preventDefault()
			});
		});
	});
}

//Функция подсчета избранных уроков
function count_favorite(user_id) {
		$.get(`/chtm/favorite~load?user_id=${user_id}`, function(data) {
			allFavorite = data;
			if (allFavorite.length > 0)
				$('.menu-item-favorite .notify-count').text(allFavorite.length).show();
			else
				$('.menu-item-favorite .notify-count').hide();
		})
}

//Фунция стилизации иконки избранного
function loadIcon(val) {
	let strokeColor = '#4C4C4C';
	let fillColor = '#4C4C4C';
	
	if (val) {
		fillColor = '#DD141F';
		strokeColor = '#DD141F';
	} else {
		fillColor = 'none';
		strokeColor = '#000000';
	}
	
	return `
		<svg xmlns="http://www.w3.org/2000/svg" width="20" height="22" viewBox="0 0 20 22" fill="none">
		  <path d="M8.67749 16.8705L3.59333 20.6765C3.35238 20.8569 3.066 20.9667 2.7662 20.9935C2.4664 21.0204 2.16506 20.9633 1.89589 20.8286C1.62673 20.6939 1.40036 20.4869 1.24212 20.2309C1.08389 19.9748 1.00004 19.6798 1 19.3788V4.243C1 3.38299 1.3416 2.55819 1.94969 1.95001C2.55779 1.34183 3.38255 1.00011 4.24261 1H15.0531C15.9131 1.00011 16.7379 1.34183 17.346 1.95001C17.9541 2.55819 18.2957 3.38299 18.2957 4.243V19.3784C18.2957 19.6794 18.2118 19.9744 18.0536 20.2305C17.8953 20.4865 17.669 20.6934 17.3998 20.8281C17.1306 20.9629 16.8293 21.02 16.5295 20.9931C16.2297 20.9662 15.9433 20.8565 15.7024 20.6761L10.6211 16.8705C10.3406 16.6605 9.9997 16.547 9.64931 16.547C9.29892 16.547 8.95795 16.6605 8.67749 16.8705Z" fill="${fillColor}" stroke="${strokeColor}" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
		</svg>
	`;
}